﻿Type.registerNamespace("MoniMisi2");

MoniMisi2.Fecha = function(element) {
    MoniMisi2.Fecha.initializeBase(this, [element]);
    this.value = null;
    this.DelOnKeyDown = Function.createDelegate(this, this.OnKeyDown);
    this.DelValidar = Function.createDelegate(this, this.Validar);
    this.DelSeleccion = Function.createDelegate(this, this.SeleccionFecha);
    this.DelLoad = Function.createDelegate(this, this.OnLoadAplicacion);
    this.Permanecer = false
    this.Defecto = null;
    this.Texto = null;
    this.CssError = null;
    this.CssCorrecto = null;
    this.AceptaBlanco = true;
    this.AutoCompletar = null;
    this.Orden = null;
    this.Mascara = null;
    this.Separador = null;
    this.Calendario = null;
    this.ConCalendario = true;
    this.RangoDesde = null;
    this.RangoHasta = null;
    this.DiasProhibidos = null;
    this.IdFeriados = null;
    this.TablaFeriados = null;
    this.ColumnaFeriados = null;
    this.Funciones = new MoniMisi2.Funciones();
    this.DelValida = null;
    this.ColumnaAtributo = null;
    this.AceptaFeriados = null;
};

MoniMisi2.Fecha.prototype = {

    initialize: function() {
        MoniMisi2.Fecha.callBaseMethod(this, 'initialize');
        this.Texto = this._element
        this.DelValida = Function.createDelegate(this, this.ValidaRangos);
        $addHandler(this.Texto, "keydown", this.DelOnKeyDown);
        $addHandler(this.Texto, "blur", this.DelValidar);
        Sys.Application.add_load(this.DelLoad)
        this.Separador = Sys.CultureInfo.CurrentCulture.dateTimeFormat.DateSeparator;
        var PartesMascara = Sys.CultureInfo.CurrentCulture.dateTimeFormat.ShortDatePattern.split(this.Separador);
        if (PartesMascara[0].length == 1) { PartesMascara[0] += PartesMascara[0] }
        if (PartesMascara[1].length == 1) { PartesMascara[1] += PartesMascara[1] }
        if (PartesMascara[2].length == 1) { PartesMascara[2] += PartesMascara[2] }
        this.Mascara = PartesMascara[0] + this.Separador + PartesMascara[1] + this.Separador + PartesMascara[2];
        switch (this.Mascara.substring(0, 1).toUpperCase()) {
            case 'D':
                this.Orden = 'DMY'
                break;
            case 'M':
                this.Orden = 'MDY'
                break;
            case 'Y':
                this.Orden = 'YMD'
                break;
        }
        if (this.Defecto.getFullYear() == 1) {
            this.FormatearTexto()
        } else {
            this.FormatearTexto(this.Defecto);
        }
        this.CssCorrecto = this.Texto.className
        this.Calendario = document.createElement("span")
        this.Calendario.className = "Calendario";
        this.Calendario.style.display = "none";

        var TablaMes = document.createElement("table")
        TablaMes.className = "TablaMes";
        var FilaFecha = TablaMes.insertRow(-1)
        FilaFecha.className = "Calendario_CabeceraFecha"
        var CeldaFecha = FilaFecha.insertCell(-1);
        CeldaFecha.colSpan = 7
        var FilaSemana = TablaMes.insertRow(-1)
        FilaSemana.className = "Calendario_CabeceraDias"
        var CeldaSemana0 = FilaSemana.insertCell(-1);
        CeldaSemana0.innerHTML = Sys.CultureInfo.CurrentCulture.dateTimeFormat.ShortestDayNames[0]
        var CeldaSemana1 = FilaSemana.insertCell(-1);
        CeldaSemana1.innerHTML = Sys.CultureInfo.CurrentCulture.dateTimeFormat.ShortestDayNames[1]
        var CeldaSemana2 = FilaSemana.insertCell(-1);
        CeldaSemana2.innerHTML = Sys.CultureInfo.CurrentCulture.dateTimeFormat.ShortestDayNames[2]
        var CeldaSemana3 = FilaSemana.insertCell(-1);
        CeldaSemana3.innerHTML = Sys.CultureInfo.CurrentCulture.dateTimeFormat.ShortestDayNames[3]
        var CeldaSemana4 = FilaSemana.insertCell(-1);
        CeldaSemana4.innerHTML = Sys.CultureInfo.CurrentCulture.dateTimeFormat.ShortestDayNames[4]
        var CeldaSemana5 = FilaSemana.insertCell(-1);
        CeldaSemana5.innerHTML = Sys.CultureInfo.CurrentCulture.dateTimeFormat.ShortestDayNames[5]
        var CeldaSemana6 = FilaSemana.insertCell(-1);
        CeldaSemana6.innerHTML = Sys.CultureInfo.CurrentCulture.dateTimeFormat.ShortestDayNames[6]

        for (var semana = 0; semana < 6; semana += 1) {
            var Fila = TablaMes.insertRow(-1)
            for (var Dia = 0; Dia < 7; Dia += 1) {
                var Celda = Fila.insertCell(-1)
                Celda.innerHTML = Dia;
                $addHandler(Celda, "mousedown", this.DelSeleccion);

            }
        }
        this.add_Validando(this.DelValida)
        this.Calendario.appendChild(TablaMes);
        this._element.parentNode.appendChild(this.Calendario);
        this.Funciones.InitValidarControl(this);
        //this.Validar();
    },
    dispose: function() {
        MoniMisi2.Fecha.callBaseMethod(this, 'dispose');
    },

    OnLoadAplicacion: function() {
        if (document.getElementById(this.IdFeriados) != null) {
            this.TablaFeriados = document.getElementById(this.IdFeriados).control;
            this.TablaFeriados.Arribar();
        };
    },

    SeleccionFecha: function(e) {
        if (e.target.Dia.getTime() < this.RangoDesde.getTime() || e.target.Dia.getTime() > this.RangoHasta.getTime() || this.DiasProhibidos[e.target.Dia.getDay()]) {
        } else {
            this.set_value(e.target.Dia);
        }
        this.Permanecer = true;
    },



    CrearCalendario: function(pFecha) {

        var Fecha = pFecha
        var Hoy = new Date();
        if (Fecha == null) { Fecha = new Date() };
        var PrimerDia = new Date(Fecha.getFullYear(), Fecha.getMonth(), 1);
        var DiaSemana = PrimerDia.getDay();
        if (DiaSemana == 0) { DiaSemana = 7 };
        var DiaDesde = new Date(PrimerDia - DiaSemana * 24 * 60 * 60 * 1000);
        this.Calendario.childNodes[0].rows[0].cells[0].innerHTML = Fecha.toLocaleDateString()
        this.Calendario.childNodes[0].rows[0].cells[0].innerHTML
        for (var semana = 2; semana < 8; semana += 1) {
            for (var Dia = 0; Dia < 7; Dia += 1) {
                this.Calendario.childNodes[0].rows[semana].cells[Dia].className = "Calendario_Dia"
                if (DiaDesde.getDay() == 0 || DiaDesde.getDay() == 6) {
                    this.Calendario.childNodes[0].rows[semana].cells[Dia].className = "Calendario_FinDeSemana"
                }
                if (DiaDesde.getMonth() != Fecha.getMonth()) {
                    this.Calendario.childNodes[0].rows[semana].cells[Dia].className = "Calendario_DiaOtroMes"
                }

                if (DiaDesde.getTime() == new Date(Hoy.getFullYear(), Hoy.getMonth(), Hoy.getDate()).getTime()) {
                    this.Calendario.childNodes[0].rows[semana].cells[Dia].className = "Calendario_Hoy"
                }
                if (DiaDesde.getTime() == Fecha.getTime()) {
                    this.Calendario.childNodes[0].rows[semana].cells[Dia].className = "Calendario_Valor"
                }
                if (this.EsFeriado(DiaDesde)) {
                    this.Calendario.childNodes[0].rows[semana].cells[Dia].className = "Calendario_Inactivo"
                    if (this.ColumnaAtributo != null && this.ColumnaAtributo != "") {
                        this.Calendario.childNodes[0].rows[semana].cells[Dia].setAttribute(this.ColumnaAtributo, this.TablaFeriados.Registro[this.ColumnaAtributo])
                    }
                } else {
                    if (this.ColumnaAtributo != null && this.ColumnaAtributo != "") {
                        this.Calendario.childNodes[0].rows[semana].cells[Dia].setAttribute(this.ColumnaAtributo, "")
                    }

                }

                if (DiaDesde.getTime() < this.RangoDesde.getTime() || DiaDesde.getTime() > this.RangoHasta.getTime() || this.DiasProhibidos[DiaDesde.getDay()]) {
                    this.Calendario.childNodes[0].rows[semana].cells[Dia].className = "Calendario_Inactivo"
                }
                this.Calendario.childNodes[0].rows[semana].cells[Dia].innerHTML = this.Funciones.PadL(DiaDesde.getDate(), "0", 2);
                this.Calendario.childNodes[0].rows[semana].cells[Dia].Dia = DiaDesde;
                DiaDesde = new Date(DiaDesde.getTime() + 24 * 60 * 60 * 1000);
            }
        }
        this.Calendario.style.display = "";
        this.Funciones.Anclar(this._element, "SO", this.Calendario, "NO");



    },

    EsFeriado: function(pFecha) {
        if (document.getElementById(this.IdFeriados) != null) {
            this.TablaFeriados = document.getElementById(this.IdFeriados).control;

        };
        if (this.TablaFeriados != null) {
            if (this.TablaFeriados.OData) { pFecha = new Date(pFecha.getTime() - pFecha.getTimezoneOffset() * 60 * 1000).toISOString().split(".")[0] }
            this.TablaFeriados.Buscar({ Valor: pFecha })
            if (this.TablaFeriados.Registro != null) {
                var FechaEncontrada = this.TablaFeriados.Registro[this.TablaFeriados.Ordenes[this.TablaFeriados.IndiceActual].Columna]
                if (this.TablaFeriados.OData) {
                    //FechaEncontrada = new Date(FechaEncontrada.split("T")[0].replace(/-/g, "/"))
                    FechaEncontrada = new Date(FechaEncontrada);
                    pFecha = new Date(pFecha);
                }
                if (FechaEncontrada.getTime() == pFecha.getTime()) {
                    return true;
                }
            }
            return false;
        } else {
            return false;
        }
    },

    FormatearTexto: function(pFecha) {
        if (pFecha != undefined && pFecha != null) {
            this.Texto.value = this.Mascara.replace(/d/gi, "D").replace(/m/gi, "M").replace(/y/gi, "Y")
            var Partes = this.Texto.value.split(this.Separador)
            var DigAnio = Partes[this.Orden.indexOf("Y")].length
            this.Texto.value = this.Texto.value.replace(/DD/gi, this.Funciones.PadL(pFecha.getDate(), "0", 2))
            this.Texto.value = this.Texto.value.replace(/MM/gi, this.Funciones.PadL(pFecha.getMonth() + 1, "0", 2))
            if (DigAnio == 4) {
                this.Texto.value = this.Texto.value.replace(/YYYY/gi, this.Funciones.PadL(pFecha.getFullYear(), "0", 4))
            } else {
                this.Texto.value = this.Texto.value.replace(/YY/gi, this.Funciones.PadL(pFecha.getYear(), "0", 2))
            }
        } else {
            this.Texto.value = this.Mascara.replace(/d/gi, " ").replace(/m/gi, " ").replace(/y/gi, " ");
        }
    },
    TextoAFecha: function(pTexto) {
        var Partes = pTexto.split(Sys.CultureInfo.CurrentCulture.dateTimeFormat.DateSeparator);
        var EsBlanco = (Partes[2] + Partes[1] + Partes[0]).replace(/ /g, "") == ""
        var Fecha = null;
        if (!(this.AceptaBlanco && EsBlanco)) {
            var Auto = new Date(1, 1, 1);
            switch (this.AutoCompletar) {
                case 'Nada':
                    break;
                case 'Defecto':
                    Auto = this.Defecto
                    break;
                case 'Hoy':
                    Auto = new Date();
                    break;
            };
            var Anio = parseInt(Partes[this.Orden.indexOf('Y')], 10)
            var Mes = parseInt(Partes[this.Orden.indexOf('M')], 10)
            var Dia = parseInt(Partes[this.Orden.indexOf('D')], 10)
            if (this.AutoCompletar != 'Nada') {
                if (isNaN(Dia)) { Dia = Auto.getDate() }
                if (isNaN(Mes)) { Mes = Auto.getMonth() + 1 }
                if (isNaN(Anio)) { Anio = Auto.getFullYear() }
            }
            if (!(isNaN(Dia) && isNaN(Dia) && isNaN(Dia))) {
                Fecha = new Date(Anio, Mes - 1, Dia);
                if (Fecha.getFullYear() != Anio || Fecha.getMonth() + 1 != Mes || Fecha.getDate() != Dia) {
                    Fecha = NaN;
                }
            }
        }
        return Fecha;
    },


    Validar: function(e) {
        this.value = this.TextoAFecha(this.Texto.value);
        if (!isNaN(this.value)) {
            this.FormatearTexto(this.value);
        }
        this.Funciones.ValidarControl(this, this.value);
        if (!this.Permanecer)
        { this.Calendario.style.display = "none" }
        else {
            this.Permanecer = false;
            this.Texto.select()
        }
    },
    ValidaRangos: function(sender, e) {

        if (!(sender.AceptaBlanco && e.Valor == null)) {
            if (!sender.AceptaBlanco && e.Valor == null) {
                e.Mensajes.push("no puede ser blanco")
                e.Erroneo = true;
            } else {
                if (isNaN(e.Valor)) {
                    e.Mensajes.push("valor inexistente en calendario")
                    e.Erroneo = true;
                } else {
                    if (e.Valor.getTime() < sender.RangoDesde.getTime() || e.Valor.getTime() > sender.RangoHasta.getTime()) {
                        e.Mensajes.push("se debe encontrar entre " + sender.RangoDesde.toLocaleDateString() + " y " + sender.RangoHasta.toLocaleDateString());
                        e.Erroneo = true;
                    }
                    if (this.DiasProhibidos[e.Valor.getDay()]) {
                        var MenErr = "los días ";
                        for (var n = 0; n < 7; n += 1) {
                            if (this.DiasProhibidos[n]) {
                                MenErr += Sys.CultureInfo.CurrentCulture.dateTimeFormat.DayNames[n] + " ,";
                            }
                        }
                        MenErr = MenErr.substring(0, MenErr.length - 1)
                        MenErr += "estan inhabilitados para la seleccion";
                        e.Mensajes.push(MenErr);
                        e.Erroneo = true;
                    }
                    if (!this.AceptaFeriados) {
                        if (sender.EsFeriado(e.Valor)) {
                            e.Mensajes.push("no puede ser feriado")
                            e.Erroneo = true;
                        }
                    }
                }
            }
        }
    },

    OnKeyDown: function(e) {

        var Permitidos = "0123456789`abcdefghi"
        var MovimientosPermitidos = ",8,9,127,39,37,35,36,";
        evento = (e || window.event);
        var Tecla = evento.keyCode;
        var PosCur = this.PosicionCursor(this.Texto)
        if (Tecla >= 96 && Tecla <= 105) { Tecla = Tecla - 48 };
        var Caracter = String.fromCharCode(Tecla);

        if (Permitidos.indexOf(String.fromCharCode(Tecla)) != -1 || MovimientosPermitidos.indexOf("," + Tecla + ",") != -1) {
            switch (Tecla) {
                case 9: //Tab
                    break;
                case 8: // Backspace
                    var Seleccionado = this.Seleccion(this.Texto)
                    if (Seleccionado.Largo == 0) {
                        PosCur = PosCur - 1;
                        if (PosCur == -1) {
                            PosCur = 0;
                            e.preventDefault();
                            break;
                        }
                        if (this.CursorEn(PosCur) == this.Separador) {
                            PosCur = PosCur - 1;
                        }
                        this.Texto.value = this.Texto.value.substring(0, PosCur) + " " + this.Texto.value.substring(PosCur + 1);
                    } else {
                        this.LimpiarSeleccionFecha(this.Texto);
                    }
                    this.PosicionarCursor(this.Texto, PosCur);
                    e.preventDefault();
                    break;
                case 127: // Delete
                    var Seleccionado = this.Seleccion(this.Texto)
                    if (Seleccionado.Largo == 0) {
                        var EstaSobre = this.CursorEn(PosCur)
                        if (EstaSobre != this.Separador) {
                            this.Texto.value = this.Texto.value.substr(0, PosCur) + this.Texto.value.substr(PosCur + 1)
                            var Partes = this.Texto.value.split(this.Separador);
                            Partes[this.Orden.indexOf(EstaSobre)] += " "
                            this.Texto.value = Partes[0] + this.Separador + Partes[1] + this.Separador + Partes[2];
                        }
                    } else {
                        this.LimpiarSeleccionFecha(this.Texto);
                    }
                    this.PosicionarCursor(this.Texto, PosCur);
                    e.preventDefault();
                    break;
                case 39: // Derecha
                    PosCur = PosCur + 1;
                    break;
                case 37: // Izquierda
                    PosCur = PosCur - 1;
                    break;
                case 36: // Inicio
                    PosCur = 0;
                    break;
                case 35: // End
                    PosCur = 10;
                    break;
                default:
                    var Seleccionado = this.Seleccion(this.Texto)
                    if (Seleccionado.Largo != 0) {
                        this.LimpiarSeleccionFecha(this.Texto);
                    }
                    if (PosCur == this.Mascara.length) {
                        e.preventDefault();
                        break;
                    }
                    if (this.CursorEn(PosCur) == this.Separador) {
                        PosCur = PosCur + 1;
                    }
                    this.Texto.value = this.Texto.value.substring(0, PosCur) + Caracter + this.Texto.value.substring(PosCur + 1);
                    PosCur = PosCur + 1

                    this.PosicionarCursor(this.Texto, PosCur);

                    if (this.ConCalendario) { this.CrearCalendario(this.AproximarFecha(this.Texto.value)) };
                    e.preventDefault();

                    break;

            }

            return true
        } else {
            e.preventDefault();
        }
    },

    AproximarFecha: function(pFecha) {
        var Partes = this.Texto.value.split(Sys.CultureInfo.CurrentCulture.dateTimeFormat.DateSeparator);
        var Anio = parseInt(Partes[this.Orden.indexOf('Y')], 10)
        var Mes = parseInt(Partes[this.Orden.indexOf('M')], 10)
        var Dia = parseInt(Partes[this.Orden.indexOf('D')], 10)
        var Auto = new Date(1, 1, 1);
        var Fecha = null;
        switch (this.AutoCompletar) {
            case 'Nada':
                Auto = new Date();
                break;
            case 'Defecto':
                Auto = this.Defecto
                break;
            case 'Hoy':
                Auto = new Date();
                break;
        };
        if (isNaN(Dia)) { Dia = Auto.getDate() }
        if (isNaN(Mes)) { Mes = Auto.getMonth() + 1 }
        if (isNaN(Anio)) { Anio = Auto.getFullYear() }
        Fecha = new Date(Anio, Mes - 1, Dia);
        if (Fecha.getFullYear() != Anio || Fecha.getMonth() + 1 != Mes || Fecha.getDate() != Dia) {
            Fecha = Auto;
        }
        return Fecha;
    },

    LimpiarSeleccionFecha: function(pTexto) {
        var Seleccionado = this.Seleccion(pTexto)
        var Texto = pTexto.value
        pTexto.value = Texto.substring(0, Seleccionado.Inicio - 1)
        pTexto.value += Texto.substring(Seleccionado.Inicio - 1, Seleccionado.Inicio + Seleccionado.Largo - 1).replace(/[0-9]/gi, " ")
        pTexto.value += Texto.substring(Seleccionado.Inicio + Seleccionado.Largo - 1)
    },

    CursorEn: function(pPos) {
        return this.Mascara.substr(pPos, 1).toUpperCase();
    },

    PosicionCursor: function(pTexto) {

        if (document.selection && !window.getSelection) {
            var rango = document.selection.createRange().duplicate()
            rango.moveEnd('character', pTexto.value.length)
            if (rango.text == '') return pTexto.value.length
            return pTexto.value.lastIndexOf(rango.text)
        } else {
            return pTexto.selectionStart
        }


    },

    PosicionarCursor: function(pTexto, pPos) {

        if (document.selection && !window.getSelection) {
            var rango = pTexto.createTextRange();
            if (pPos == null) {
                rango.moveStart('character', 0);
                rango.moveEnd('character', pTexto.value.length);
            } else { rango.move('character', pPos) };
            rango.select();
        } else {
            pTexto.focus();
            pTexto.setSelectionRange(pPos, pPos);
        }
    },

    Seleccion: function Seleccion(pTexto) {
        if (document.selection && !window.getSelection) {
            var rango = document.selection.createRange().duplicate();
            var LargoSeleccion = rango.text.length;
            rango.moveEnd('character', pTexto.value.length);
            return { Inicio: pTexto.value.lastIndexOf(rango.text) + 1, Largo: LargoSeleccion };
        } else {
            return { Inicio: pTexto.selectionStart + 1, Largo: pTexto.selectionEnd - pTexto.selectionStart };
        }
    },

    get_value: function() {
        return this.value;

    },

    set_value: function(value) {
        if (typeof value == "string") {
            value = value.replace(/[TZ]/, ' ').replace(/-/g, '/');
        }
        var timestamp = Date.parse(value)
        if (isNaN(timestamp) == false) {
            this.FormatearTexto(new Date(value));
            this.Validar();
            this.raisePropertyChanged('value');
        } else {
            if (!value) {
                this.FormatearTexto();
                this.Validar();
                this.raisePropertyChanged('value');
            } else {
                throw "Fecha erronea: " + value;
            }
        }

    },

    get_CssError: function() {
        return this.CssError;
    },

    set_CssError: function(value) {
        if (this.CssError !== value) {
            this.CssError = value;
            this.raisePropertyChanged('CssError');
        }
    },
    get_Defecto: function() {
        return this.Defecto;
    },

    set_Defecto: function(value) {
        if (this.Defecto !== value) {
            this.Defecto = value;
            this.raisePropertyChanged('Defecto');
        }
    },

    get_RangoDesde: function() {
        return this.RangoDesde;
    },

    set_RangoDesde: function(value) {
        if (this.RangoDesde !== value) {
            this.RangoDesde = value;
            this.raisePropertyChanged('RangoDesde');
        }
    },

    get_RangoHasta: function() {
        return this.RangoHasta;
    },
    set_RangoHasta: function(value) {
        if (this.RangoHasta !== value) {
            this.RangoHasta = value;
            this.raisePropertyChanged('RangoHasta');
        }
    },

    get_DiasProhibidos: function() {
        return this.DiasProhibidos;
    },
    set_DiasProhibidos: function(value) {
        this.DiasProhibidos = new Array();
        for (var n = 6; n >= 0; n -= 1) {
            if (value - Math.pow(2, n) >= 0) {
                this.DiasProhibidos[n] = true
                value -= Math.pow(2, n)
            } else {
                this.DiasProhibidos[n] = false
            }
        }
        this.raisePropertyChanged('DiasProhibidos');

    },



    get_AceptaBlanco: function() {
        return this.AceptaBlanco;
    },

    set_AceptaBlanco: function(value) {
        if (this.AceptaBlanco !== value) {
            this.AceptaBlanco = (value == "True" ? true : false);
            this.raisePropertyChanged('AceptaBlanco');
        }
    },

    get_AutoCompletar: function() {
        return this.AutoCompletar;
    },

    set_AutoCompletar: function(value) {
        if (this.AutoCompletar !== value) {
            this.AutoCompletar = value;
            this.raisePropertyChanged('AutoCompletar');
        }
    },

    get_IdFeriados: function() {
        return this.IdFeriados;
    },

    set_IdFeriados: function(value) {
        if (this.IdFeriados !== value) {
            this.IdFeriados = value;
            this.raisePropertyChanged('IdFeriados');
        }
    },

    get_AceptaFeriados: function() {
        return this.AceptaFeriados;
    },

    set_AceptaFeriados: function(value) {
        if (this.AceptaFeriados !== value) {
            this.AceptaFeriados = value;
            this.raisePropertyChanged('AceptaFeriados');
        }
    },

    get_ColumnaAtributo: function() {
        return this.ColumnaAtributo;
    },

    set_ColumnaAtributo: function(value) {
        if (this.ColumnaAtributo !== value) {
            this.ColumnaAtributo = value;
            this.raisePropertyChanged('ColumnaAtributo');
        }
    },

    get_ConCalendario: function() {
        return this.ConCalendario;
    },

    set_ConCalendario: function(value) {
        if (this.ConCalendario !== value) {
            this.ConCalendario = value;
            this.raisePropertyChanged('ConCalendario');
        }
    },

    add_Validando: function(handler) {
        this.get_events().addHandler('Validando', handler);
    },
    remove_Validando: function(handler) {
        this.get_events().removeHandler('Validando', handler);
    }
}

MoniMisi2.Fecha.registerClass('MoniMisi2.Fecha', Sys.UI.Control);

if (typeof (Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();